<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link href="../../style.css" rel="stylesheet" type="text/css">
    <title>PETSc: Documentation: Changes: 2.0.22</title>
  </head>
  <body>

    <div id="logo">
      <h1>PETSc</h1>
    </div>

    <div id="header">
      <h1><!--begin-->Documentation: Changes: 2.0.22<!--end--></h1>
    </div>

    <hr>

    <div id="sidebar">
      <ul>
        <li><a href="../../index.html">Home</a></li>
        <li><a href="../../download/index.html">Download</a></li>
        <li><a href="../../features/index.html">Features</a></li>
        <li>
          <a href="../../documentation/index.html">Documentation</a>
          <ul>
            <li><a href="../index.html">Manual pages and Users Manual</a></li>
            <li><a href="../referencing.html">Referencing PETSc</a></li>
            <li><a href="../tutorials/index.html">Tutorials</a></li>
            <li><a href="../installation.html">Installation</a></li>
            <li><a href="../saws.html">SAWs</a></li>
            <li>
              <a href="index.html">Changes</a>
              <ul>
                <li><a href="dev.html">dev</a></li>
                <li><a href="38.html">3.8</a></li>
                <li><a href="37.html">3.7</a></li>
                <li><a href="36.html">3.6</a></li>
                <li><a href="35.html">3.5</a></li>
                <li><a href="34.html">3.4</a></li>
                <li><a href="33.html">3.3</a></li>
                <li><a href="32.html">3.2</a></li>
                <li><a href="31.html">3.1</a></li>
                <li><a href="300.html">3.0.0</a></li>
                <li><a href="233.html">2.3.3</a></li>
                <li><a href="232.html">2.3.2</a></li>
                <li><a href="231.html">2.3.1</a></li>
                <li><a href="230.html">2.3.0</a></li>
                <li><a href="221.html">2.2.1</a></li>
                <li><a href="220.html">2.2.0</a></li>
                <li><a href="216.html">2.1.6</a></li>
                <li><a href="215.html">2.1.5</a></li>
                <li><a href="213.html">2.1.3</a></li>
                <li><a href="212.html">2.1.2</a></li>
                <li><a href="211.html">2.1.1</a></li>
                <li><a href="21.html">2.1.0</a></li>
                <li><a href="2029.html">2.0.29</a></li>
                <li><a href="2028.html">2.0.28</a></li>
                <li><a href="2024.html">2.0.24</a></li>
                <li><span class="current">2.0.22</span></li>
                <li><a href="2018-21.html">2.0.18-21</a></li>
                <li><a href="2017.html">2.0.17</a></li>
                <li><a href="2016.html">2.0.16</a></li>
                <li><a href="2015.html">2.0.15</a></li>
              </ul>
            </li>
            <li><a href="../bugreporting.html">Bug Reporting</a></li>
            <li><a href="../codemanagement.html">Code Management</a></li>
            <li><a href="../faq.html">FAQ</a></li>
            <li><a href="../license.html">License</a></li>
            <li><a href="../linearsolvertable.html">Linear Solver Table</a></li>
          </ul>
        </li>
        <li><a href="../../publications/index.html">Applications/Publications</a></li>
        <li><a href="../../miscellaneous/index.html">Miscellaneous</a></li>
        <li><a href="../../miscellaneous/external.html">External Software</a></li>
        <li><a href="../../developers/index.html">Developers Site</a></li>
      </ul>
    </div>

    <!--begin-->

    <style type="text/css">
      h2 {
        color: red;
      }

      h4 {
        font-weight: bold;
        text-decoration: underline;
      }
    </style>

    <div id="main">

      <div align="center">
        <h2>NEW FEATURES and <a name="CHANGES">CHANGES</a> in PETSc 2.0.22</h2>
      </div>

      <h4>General:</h4>

      <ul>
        <li>
          The Fortran90-specific routines such as <code>VecGetArrayF90()</code>
          now work with the IBM Fortran compiler, the SGI Fortran 90 compiler,
          and the Cray T3E Fortran compiler.
        </li>

        <li>
          The third argument for the Fortran versions of the routines
          <code>VecGetArray()/VecRestoreArray(),</code>
          <code>ISGetIndices()/ISRestoreIndices(),
            MatGetArray()/MatRestoreArray()</code> and
          <code>DAGetGlobalIndices()</code> has been changed from
          <code>integer</code> to <code>PetscOffset</code>.  See
          src/snes/examples/tutorials/ex5f.F for example usage.
        </li>

        <li>
          Changed the location of the manual pages from docs/www/www.html and
          docs/www to <code>docs/manualpages/manualpages.html</code> and
          <code>docs/manualpages</code>.
        </li>

        <li>
          The location of the mpiuni include files (used in the base.site file
          when not compiling with an MPI) has moved from
          <code>src/mpiuni</code> to <code>src/sys/src/mpiuni</code>
        </li>

        <li>
          Added the option <code>-log_summary_exclude &lt;vec,mat,sles,snes&gt;</code> to
          limit the information printed in the summary table
        </li>

        <li>Added the option <code>-log_info_exclude &lt;vec,mat,sles,snes&gt;</code></li>

        <li>
          Changed the calling sequences of <code>PetscGetTime(),
            PetscGetCPUTime(), PetscGetFlops()</code> to return error codes
          like all other PETSc functions.
        </li>

        <li>
          Changed the internal structure of the PETSc objects. This will not
          effect most users but makes PETSc more extensible for the
          future.
        </li>

        <li>
          Removed the PETSc object child support and replaced it with

          <ul>
            <li><code>PetscObjectCompose(PetscObject,char *name,PetscObject);</code></li>
            <li><code>PetscObjectQuery(PetscObject,char *name,PetscObject *);</code></li>
            <li><code>PetscObjectComposeFunction(PetscObject,char *name, void *);</code></li>
            <li><code>PetscObjectQueryFunction(PetscObject,char *name,void **);</code></li>
          </ul>
          These allow the user to attach objects and functions to any PETSc object.
        </li>

        <li>
          Added a feeble example that demonstrates how to manage partitioning
          a grid in parallel in <code>src/mat/examples/tutorials/ex2.c</code>
        </li>

        <li>
          The build command 'make all' in ${PETSC_DIR} will build the PETSc
          libraries, including the fortran interface.
        </li>
      </ul>

      <h4>AO (Application Orderings):</h4>
      <h4>TS (Timestepping Solvers):</h4>

      <ul>
        <li>The calling sequence of <code>TSSetType()</code> has changed; see the manual page.</li>
        <li><code>TSType</code> is now a string, rather than enum type</li>
      </ul>

      <h4>SNES (Nonlinear Solvers):</h4>

      <ul>
        <li>The calling sequence of <code>SNESSetType()</code> has changed; see the manual page.</li>
        <li><code>SNESType</code> is now a string, rather than enum type</li>
      </ul>

      <h4>SLES (Linear Solvers):</h4>

      <ul>
        <li>See PC and KSP</li>
      </ul>

      <h4>KSP (Krylov Subspace Methods):</h4>

      <ul>
        <li>The calling sequence of <code>KSPSetType()</code> has changed; see the manual page.</li>
        <li><code>KSPType</code> is now a string, rather than enum type.</li>
      </ul>

      <h4>PC (Preconditioners):</h4>

      <ul>
        <li>
          Added two new PC classes, <code>PCSLES</code> and
          <code>PCCOMPOSITE</code> that allow use of any
          <code>SLES</code> object as a preconditioner and enable combining
          several preconditioners.
        </li>
        <li>The calling sequence of <code>PCSetType()</code> has changed; see the manual page.</li>
        <li><code>PCType</code> is now a string, rather than enum type.</li>
      </ul>

      <h4>MAT (Matrices):</h4>

      <ul>
        <li>
          Added support for partitioning using the ParMETIS parallel
          partitioning package, see the manual page for
          <code>PartitioningCreate()</code>
        </li>

        <li>Added <code>MatGetColumnVector()</code></li>
        <li>Added argument column size to <code>MatGetSubMatrix()</code></li>

        <li>
          Changed the memory allocation algorithm in
          <code>MatLUFactorSymbolic()</code> and
          <code>MatILUFactorSymbolic()</code> based on a suggestion by David
          Hysom of ODU.
        </li>

        <li>
          The third argument for the Fortran version of the routines
          <code>MatGetArray()/MatRestoreArray()</code> has been changed from
          <code>integer</code> to <code>PetscOffset</code>.
        </li>
      </ul>

      <h4>DA (Distributed Arrays):</h4>

      <ul>
        <li>
          Changed <code>DAGetDistributedVector()</code> and
          <code>DAGetLocalVector()</code> to
          <code>DACreateGlobalVector()</code> and
          <code>DACreateLocalVector()</code>. You should destroy these
          vectors with a usual call to <code>VecDestroy()</code>.
        </li>

        <li>
          The third argument for the Fortran version of the routine
          <code>DAGetGlobalIndices()</code> has been changed from
          <code>integer</code> to <code>PetscOffset</code>.
        </li>
      </ul>

      <h4>VEC (Vectors):</h4>

      <ul>
        <li>
          Added <code>VecSetBlockSize(), VecSetValuesBlocked(),
            VecSetValuesBlockedLocal(),
            VecSetLocalToGlobalMappingBlocked()</code>
        </li>

        <li>
          Added<code> VecCreatedShared(),</code> which creates
          a parallel vector in shared memory on the SGI machines
        </li>

        <li>
          Changed
          <code>VEC_IGNORE_OFF_PROCESSOR_ENTRIES</code> to
          <code>VEC_IGNORE_OFF_PROC_ENTRIES</code>
        </li>

        <li>
          The third argument for the Fortran versions of the routines
          <code>VecGetArray()/VecRestoreArray(),</code> has been changed from
          <code>integer</code> to <code>PetscOffset</code>. See
          src/snes/examples/tutorials/ex5f.F for example usage.
        </li>

        <li>
          <code>VecGetArray(), VecRestoreArray()</code> now work from Fortran on
          all machines, finally after 3 long years!
        </li>

        <li>
          Changed the calling sequence of
          <code>VecCreate()</code>, now takes both local and global size,
          see the manual page.
        </li>
      </ul>

      <h4>IS (Index Sets):</h4>

      <ul>
        <li>
          The third argument for the Fortran versions of the routines
          <code>ISGetIndices()/ISRestoreIndices()</code> has been changed from
          <code>integer</code> to <code>PetscOffset</code>.
        </li>
      </ul>

      <h4>Draw (Graphics):</h4>
      <h4>Viewers:</h4>
      <h4>System:</h4>
      <h4>Error Handling:</h4>
      <h4>Event Logging:</h4>
      <h4>Fortran Interface:</h4>

      <ul>
        <li>
          <code>PETSC_NULL</code> has been replaced with
          <code>PETSC_NULL_INTEGER</code>,
          <code>PETSC_NULL_SCALAR</code>,
          <code>PETSC_NULL_DOUBLE</code> or
          <code>PETSC_NULL_CHARACTER</code> depending on the context for
          usage. If the function expects an integer, a scalar (double or
          complex depending if you compile with BOPT=*_complex), a double
          precision array, or a string.
        </li>

        <li>
          The Fortran include files are now located in the
          directory &quot;include/finclude/*.&quot;, rather than
          &quot;include/FINCLUDE/*.h&quot;. The include files that used to be
          in &quot;include/finclude/*.h&quot; (not recommended) are now in
          &quot;include/foldinclude/*.h&quot;
        </li>

        <li>
          If you have stored PETSc objects in Fortran integer
          arrays, such as <code>user(3) = vec</code> you have
          to declare those arrays to be of type
          <code>PetscFortranAddr</code> instead of as integer. Note that
          <code>PetscFortranAddr</code> is simply integer on 32 bit
          machines and integer*8 on 64 bit machines.
        </li>

        <li>
          The Fortran90-specific routines such as
          <code>VecGetArrayF90()</code> now work with the IBM Fortran
          compiler, the SGI Fortran 90 compiler, and the Cray T3E Fortran
          compiler.
        </li>

        <li>
          PETSc objects can now be passed between C and Fortran directly. You do
          not have to use the commands
          <code>PetscCObjectToFortranObject()</code> and
          <code>PetscFortranObjectToCObject()</code> to translate the objects
          between languages.
        </li>

        <li>
          Changed Fortran object argument from type int to type PetscFortranAddr
          in the routines <code>PetscCObjectToFortranObject()</code> and
          <code>PetscFortranObjectToCObject().</code>
        </li>

        <li>
          Added the routine <code>PetscInitializeFortran()</code> to assist
          in mixed-language use of PETSc. See the manual page for details.
        </li>
      </ul>

    </div>

    <!--end-->

    <hr>

  </body>
</html>
